/**
 * 解析JSON格式的工作时间段
 * @param {string} jsonStr - JSON格式的工作时间段字符串
 * @returns {Array} - 解析后的时间段数组
 */
export function parseWorkTimeJson(jsonStr) {
    if (!jsonStr) return [];

    try {
        const times = JSON.parse(jsonStr);

        if (!Array.isArray(times)) {
            return [];
        }

        // 过滤无效时间段
        return times.filter(time => {
            return time.start && time.end && isValidTimeFormat(time.start) && isValidTimeFormat(time.end);
        });
    } catch (error) {
        console.error('解析工作时间JSON失败:', error);
        return [];
    }
}

/**
 * 验证时间格式是否正确 (HH:MM:SS)
 * @param {string} time - 时间字符串
 * @returns {boolean} - 是否有效
 */
function isValidTimeFormat(time) {
    return /^\d{2}:\d{2}:\d{2}$/.test(time);
}

/**
 * 计算工作时间段总时长（分钟）
 * @param {Array} times - 时间段数组
 * @returns {number} - 总时长（分钟）
 */
// export function calculateTotalMinutes(times) {
//     if (!Array.isArray(times) || times.length === 0) return 0;
//
//     return times.reduce((total, time) => {
//         const start = time.start.split(':').map(Number);
//         const end = time.end.split(':').map(Number);
//         const startTime = start[0] * 60 + start[1];
//         const endTime = end[0] * 60 + end[1];
//         return total + (endTime - startTime);
//     }, 0);
// }


export function calculateTotalMinutes(times) {
    // 如果 times 是字符串，尝试解析为 JSON
    if (typeof times === 'string') {
        try {
            times = JSON.parse(times);
        } catch (e) {
            console.error('解析 workTimeJson 失败:', e);
            return 0;
        }
    }

    if (!Array.isArray(times) || times.length === 0) return 0;

    return times.reduce((total, time) => {
        const start = time.start.split(':').map(Number);
        const end = time.end.split(':').map(Number);
        const startTime = start[0] * 60 + start[1];
        const endTime = end[0] * 60 + end[1];
        return total + (endTime - startTime);
    }, 0);
}
